package scheduler.core.task;

import scheduler.core.utils.TaskjValidationException;

/**
 *
 * @author Volodymyr Pogorelov
 */
public class Taskj{
    private static int id_cnt = 0;
    private int id; // ідентифікатор задачі
    private int prior; // пріорітет задачі
    private double aj; // інтенсивність виконання j-ої задачі
    private double bj; // середній час виконання j-ої задачі

    public Taskj(int prior, double aj, double bj) throws TaskjValidationException {
        this.id = ++id_cnt;
        if(prior <= 0){
            throw new TaskjValidationException(id, TaskjValidationException.ErrorType.INVALID_PRIORITY, 
                    "Прiорітет задачі повинен бути додатнім цілим числом.");
        }
        this.prior = prior;
        if(aj < 0){
            throw new TaskjValidationException(id, TaskjValidationException.ErrorType.INVALID_AJ,
                    "Інтенсивність виконання задачі повинна бути не від'ємним числом.");
        }
        this.aj = aj;
        if(bj < 0){
            throw new TaskjValidationException(id, TaskjValidationException.ErrorType.INVALID_BJ,
                    "Середній час виконання задачі повинен бути не від'ємним числом.");
        }
        this.bj = bj;
    }
    
    public static void dropIdCounter(){
        id_cnt = 0;
    }
    public static Integer getNextId() {
        return id_cnt + 1;
    }

    public int getPrior() {
        return prior;
    }
    
    public int getId() {
        return id;
    }

    public double getAj() {
        return aj;
    }

    public double getBj() {
        return bj;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setPrior(int prior) {
        this.prior = prior;
    }

    public void setAj(double aj) {
        this.aj = aj;
    }

    public void setBj(double bj) {
        this.bj = bj;
    }

    @Override
    public String toString() {
        return "Taskj{" + "id=" + id + ", prior=" + prior + ", aj=" + aj + ", bj=" + bj + '}';
    }
    
    
}
